package com.ctrip.demo.leetcode;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class LeetCode507 {

    public static void main(String[] args) {
        System.out.println(checkPerfectNumber(28));
    }



    public static boolean checkPerfectNumber(int num) {
//        System.out.println(Math.sqrt(num));
//        Set<Integer> set = new HashSet<Integer>();
//        int start = 1;
//        int end = num / 2;
//        while(start <= end) {
//            int res = num % start;
//            if (res == 0) {
//                set.add(start);
//                set.add(num / start);
//            }
//            res = num % end;
//            if(res == 0) {
//                set.add(end);
//                set.add(num / start);
//            }
//            start ++;
//            end --;
//        }
//        int res = set.stream().filter(s -> s != num).mapToInt(s -> s).sum();
//        return res == num;

        if (num == 1) {
            return false;
        }
        int res = 1;
        for (int i = 2; i < num / i; i ++) {
            if (num % i == 0) {
                res += i + num / i;
            }
        }
        return res == num;
    }
}
